package com.letoo.dragon.core.service;

import java.util.Map;

/**
 * 激光推送服务接口
 *
 * @author: dengjie
 */
public interface JPushService {

    /**
     * 根据极光推送用户别名进行推送透传消息。别名一般使用在一对一的用户上，每个用户在客户端设备上登录的时候可以设置对应的别名。
     * 
     * @param alias
     *            别名
     * @param title
     *            标题
     * @param msgContent
     *            推送内容
     * @param extras
     *            附件
     * 
     * @return 推送是否成功
     */
    public boolean sendMsgByAlias(String alias, String title, String msgContent, Map<String, String> extras);

    /**
     * 根据极光推送用户Registration ID进行推送透传消息。Registration ID：客户端初始化 JPush 成功后，JPush 服务端会分配一个 Registration ID，作为此设备的标识（同一个手机不同
     * APP 的 Registration ID 是不同的）。开发者可以通过指定具体的 Registration ID 来进行对单一设备的推送。
     * 
     * @param registrationId
     *            registrationId
     * @param title
     *            标题
     * @param msgContent
     *            推送内容
     * @param extras
     *            附件
     * 
     * @return 推送是否成功
     */
    public boolean sendMsgByRegistrationId(String registrationId, String title, String msgContent,
            Map<String, String> extras);

    /**
     * 根据极光推送用户的Tag进行推送透传消息。tag：为安装了应用程序的用户打上标签，其目的主要是方便开发者根据标签，来批量下发 Push 消息。可为每个用户打多个标签。举例： game, old_page, women
     * 
     * @param tag
     *            用户分类tag
     * @param title
     *            标题
     * @param msgContent
     *            推送内容
     * @param extras
     *            附件
     * 
     * @return 推送是否成功
     */
    public boolean sendMsgByTag(String tag, String title, String msgContent, Map<String, String> extras);

    /**
     * 根据极光推送用户别名进行推送通知。别名一般使用在一对一的用户上，每个用户在客户端设备上登录的时候可以设置对应的别名。
     * 
     * @param alias
     *            别名
     * @param title
     *            标题
     * @param msgContent
     *            推送内容
     * @param extras
     *            附件
     * 
     * @return 推送是否成功
     */
    public boolean sendNotificationByAlias(String alias, String title, String sound, String msgContent,
            Map<String, String> extras);

    /**
     * 根据极光推送用户Registration ID进行推送通知。Registration ID：客户端初始化 JPush 成功后，JPush 服务端会分配一个 Registration ID，作为此设备的标识（同一个手机不同
     * APP 的 Registration ID 是不同的）。开发者可以通过指定具体的 Registration ID 来进行对单一设备的推送。
     * 
     * @param registrationId
     *            registrationId
     * @param title
     *            标题
     * @param msgContent
     *            推送内容
     * @param extras
     *            附件
     * 
     * @return 推送是否成功
     */
    public boolean sendNotificationByRegistrationId(String registrationId, String title, String sound,
            String msgContent, Map<String, String> extras);

    /**
     * 根据极光推送用户的Tag进行推送通知。tag：为安装了应用程序的用户打上标签，其目的主要是方便开发者根据标签，来批量下发 Push 消息。可为每个用户打多个标签。举例： game, old_page, women
     * 
     * @param tag
     *            用户分类tag
     * @param title
     *            标题
     * @param msgContent
     *            推送内容
     * @param extras
     *            附件
     * 
     * @return 推送是否成功
     */
    public boolean sendNotificationByTag(String tag, String title, String sound, String msgContent,
            Map<String, String> extras);

}
